#ifndef CONSTANTES_H_
#define CONSTANTES_H_
#include <stdint.h>

typedef uint32_t uint32;
typedef unsigned long int offset;
typedef unsigned long int cantBytes;

#define LONGITUD_CANT_BYTES sizeof(cantBytes)
#define LONGITUD_HEADER_BLOQUES 5
#define LONGITUD_HEADER_REGISTROS_FIJOS 5
#define LONGITUD_METADATA_BLOQUES 4
#define LONGITUD_METADATA_REGISTRO_VARIABLE 4
#define LONGITUD_METADATA_REGISTRO_FIJO 1
#define PORCENTAJE_BLOQUE_LLENO 100

#define ARCH_REGISTROS_TAM_FIJO "r"
#define ARCH_REGISTROS_TAM_VARIABLE "v"
#define ARCH_BLOQUES_REGISTROS_FIJOS "b"
#define ARCH_BLOQUES_REGISTROS_VAR "c"

// para Buffer diferido
#define TAMANIO_MAX_BUFFERS 10


/*Constantes del compresor */
#define TAMANIO_DICCIONARIO 256
#define PRECISION 32
#define BIT32 0x80000000
enum casoDesborde {
	CASO_OVERFLOW = 0, CASO_UNDERFLOW,
};
enum CompreODescompre {
	COMPRIMIENDO = 0, DESCOMPRIMIENDO,
};

enum estado_buffer {
	OCUPADO, VALIDO, ESCRITURA_DIFERIDA, VACIO,
};

enum tipo_estrategia_recurso {
	SIN_BUFFER, DIRECTA, DIFERIDA,
};

enum tipo_fabrica_compuesto {
	FABRICA_BLOQUES, FABRICA_BLOQUES_COMPRIMIDOS,
};

/*Constantes de indiceArbol*/
#define ID_NULL 0
#define ID_RAIZ  1
enum Resultado {
	RES_OK = 0, RES_DUPLICADO, RES_INEXISTENTE, RES_SUSTITUTO,
};
#endif /*CONSTANTES_H_*/
